<?php

include_once '../dao/BDUsuario.php';
include_once '../dao/BDPostagem.php';
include_once '../dao/BDMensagem.php';
/*
 */

/**
 * Classe 
 */
class Conta {

    private $codigo;
    private $nome;
    private $interesse;
    private $nascimento;
    private $postagens;
    private $mensagens;
    private $bdConta;
    private $perseguidos;

    public function __construct() {
        $this->bdConta = new BDUsuario();
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function getNome() {
        return $this->nome;
    }

    public function getInteresse() {
        return $this->interesse;
    }

    public function getNascimento() {
        return $this->nascimento;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function setInteresse($interesse) {
        $this->interesse = $interesse;
    }

    public function setNascimento($nascimento) {
        $this->nascimento = $nascimento;
    }

    public function getNumeroAmigos() {
        return $this->numeroAmigos;
    }

    public function getPostagens() {
        return $this->postagens;
    }

    public function setPostagens($postagem) {
        $this->postagens = $postagem;
    }

    public function getMensagens() {
        return $this->mensagens;
    }

    public function setMensagens($mensagens) {
        $this->mensagens = $mensagens;
    }

    public function getTotalPerseguidores() {
        $bdAmizade = new BDAmizade();
        return $bdAmizade->totalPerseguidores($this->codigo);
    }

    public function getTotalPerseguidos() {
        $bdAmizade = new BDAmizade();
        return $bdAmizade->totalPerseguidos($this->codigo);
    }

    public function getPerseguidos() {
        return $this->perseguidos;
    }

    public function carregarPostagens() {
        $bdPostagem = new BDPostagem();
        $postagens = $bdPostagem->pesquisarConta($this->codigo);
        $this->setPostagens($postagens);
    }

    public function carregarMensagens() {
        $bdMensagem = new BDMensagem();
        $mensagens = $bdMensagem->buscar($this->codigo);
        $this->setMensagens($mensagens);
    }

    public function carregarPerseguidos() {
        $bdAmizade = new BDAmizade();
        $this->perseguidos = $bdAmizade->buscarPerseguidos($this->codigo);
    }

    public function verificarPerseguidosComum($perseguidos) {
        $perseguidosComum = array_intersect_key($perseguidos, $this->perseguidos);
        return $perseguidosComum;
    }

    public function perseguirConta($conta) {
        $bdAmizade = new BDAmizade();
        $bdAmizade->salvar($this->getCodigo(), $conta);
    }

    public function enviarMensagem(Mensagem $mensagem) {
        $bdMensagem = new BDMensagem();
        $bdMensagem->salvar($mensagem);
    }

    public function pesquisarPerseguidos() {
        $bdAmizade = new BDAmizade();
        return $bdAmizade->buscarPerseguidos($this->codigo);
    }

    public function pesquisarPerseguidores() {
        $bdAmizade = new BDAmizade();
        return $bdAmizade->buscarPerseguidores($this->codigo);
    }

    public function desfazerAmizade($idPerseguido) {
        $bdAmizade = new BDAmizade();
        $bdAmizade->deletar($this->getCodigo(), $idPerseguido);
    }

    public function verificaAmizade($id) {
        $bdAmizade = new BDAmizade();
        return $bdAmizade->verificaPerseguido($id, $this->getCodigo());
    }

    /**
     * Função da classe, para carregar um usuario pelo nome
     * @param type $nomeUsuario
     * @return type
     */
    public static function buscarNome($nomeUsuario) {
        $bdConta = new BDUsuario();
        return $bdConta->pesquisarContas($nomeUsuario);
    }

    /**
     * Função de classe
     * @param type $obj
     * @return type
     */
    public static function salvar($obj) {
        $bdUsuario = new BDUsuario();
        return $bdUsuario->salvar($obj);
    }

    public static function buscarCodigo($id) {
        $bdConta = new BDUsuario();
        return $bdConta->pesquisarPerfil($id);
    }

}
